ubuntu下不生成core dumped文件解决办法一则

您所在的位置:网站首页 linux coredump ubuntu下不生成core dumped文件解决办法一则

ubuntu下不生成core dumped文件解决办法一则

2023-05-21 08:59| 来源: 网络整理| 查看: 265

1. 什么是core dumped文件

简单讲,就是linux下的程序,在遇到空指针解引用、栈错误等原因崩溃时,bash会输出一条: 在这里插入图片描述 有时会是这样: 在这里插入图片描述 Segmentation fault后面跟的那个core dumped不见了,说明没有产生core dumped文件。 怎样人为制造一个Segmentation fault呢?最简单的办法就是解引用一个空指针:

int *p=0; printf("%d",*p); 2. core dumped文件拿来干什么

就是拿来在程序崩溃时还原现场用的。 如果你看到core dumped字样,并且在目录下也找到了一个叫core的文件,那你可以直接用gdb定位到程序崩溃的位置了(注意用gcc编译时也要开-g选项才能用gdb调试):

$ gdb ./a.out core

在这里插入图片描述 gdb加载后已经跳到程序崩溃的位置了。就是在main.c的20行。

3. 我的Segmentation fault后面没有core dumped,怎么开?

先用ulimit -c,如果看到0,说明没有开core dump。 所以我们输入ulimit -c unlimited,打开core dump。 再次用ulimit -c,看到unlimited了,说明core dump打开了。 在这里插入图片描述 注意这句ulimit -c unlimited只对当前会话有效。要永久有效的话看这里 https://www.cnblogs.com/Anker/p/6079580.html

4.我的ulimit -c已经是unlimited了,怎么还是看不到core文件?

关键来了。首先输入命令

$ man 5 core

查看手册中的core内容,然后往下翻: 在这里插入图片描述 它这里面列举了几条不产生core文件的原因,你可以逐条对照。最有可能的原因是/proc/sys/kernel/core_pattern文件里面把你的core文件发送到别处去了。我的ubuntu系统默认就是这样干的。

然后打开/proc/sys/kernel/core_pattern文件,里面如果不是像下图里我的这个这样: 在这里插入图片描述 而是显示的/proc/什么什么的,就代表它把你的core文件发到别的地方去了。 编辑这个文件,把它内容换成和我的一样。在ubuntu系统上可以这样:

$ sudo gedit core_pattern

前面那个sudo是为了获取root权限,以编辑这个文件。把内容改成core,然后保存。 正常情况下你应该可以生成core文件了。

参考

https://stackoverflow.com/questions/2065912/core-dumped-but-core-file-is-not-in-the-current-directory https://www.cnblogs.com/Anker/p/6079580.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3